/**
 * @file device_buzzer.h
 * @author canrad (1517807724@qq.com)
 * @brief 蜂鸣器驱动
 *    初始化好了以后，直接使用buzzer_xxx控制蜂鸣器即可。
 *  参考代码：
 *      buzzer_t g_buzzer = DEVICE_BUZZER_INITIALIZER(PA0,VALID_ON_HIGH_LEVEL);
 *      // 蜂鸣器响
 *      buzzer_on(&g_buzzer);
 *      // 蜂鸣器停止响
 *      buzzer_off(&g_buzzer);
 * @version 1.1
 * @date 2024-08-16
 * 
 * @copyright Copyright (c) 2024
 * 
 */
#ifndef MYLIB_DEVICE_BUZZER_H
#define MYLIB_DEVICE_BUZZER_H

#include <mylib/mylib_config.h>

typedef struct
{
    uint32_t   gpio;
    int8_t     valid;   // 什么时候响，如果是VALID_ON_LOW_LEVEL，那么在调用beep_on时，会被设置为低电平
} buzzer_t;


// 设备对象初始化器
//初始化结构体buzzer_t
#define DEVICE_BUZZER_INITIALIZER(_gpio, _valid) \
    {                                            \
        .gpio    = _gpio,                        \
        .valid   = _valid,                       \
    }

// 打开蜂鸣器
void buzzer_on(buzzer_t* buzzer);
// 关闭蜂鸣器
void buzzer_off(buzzer_t* buzzer);

#endif // !MYLIB_DEVICE_BUZZER_H
